#include "messageHandle.h"

MessageHandler::MessageHandler(const StdTcpSocketPtr &client) : m_chatroom(client)
{
    /* 清空脏数据 */
    m_handles.clear();

    /* 函数注册表（基） */
    m_handles[REGISTER] = [this](const std::string &msg)
    { m_chatroom.handleRegisterInfo(msg); };
    /* 函数注册表（基） */
    m_handles[LOGIN] = [this](const std::string &msg)
    { m_chatroom.handleLoginInfo(msg); };
}

MessageHandler::~MessageHandler()
{
}

/* 处理信息 */
void MessageHandler::handleMessage(const std::string &msg)
{
    int type = 0;
    /* 1.将json字符串解析成字符串 */
    json_object *jsonObj = json_tokener_parse(msg.c_str());
    if (jsonObj != NULL)
    {
        type = json_object_get_int(json_object_object_get(jsonObj, "type"));
    }

    auto iter = m_handles.find(type);

    if (iter != m_handles.end())
    {
        /* 处理信息 执行回调 */
        iter->second(msg);
    }
    else
    {
        /* 处理未知的消息类型 */
        std::cout << "unknown message type:" << type << std::endl;
    }
}
